গুয়াভা (Guava) লাইব্রেরি জাভা প্রোগ্রামিংয়ে ডেটা পরিচালনা সহজ এবং আরও কার্যকরী করে তোলে। এর মধ্যে Ordering ক্লাসটি বিশেষভাবে উপকারী, যা আপনাকে কাস্টম এবং ডিফল্ট অর্ডারিং কৌশল ব্যবহার করার সুবিধা দেয়। Ordering মূলত ডেটা অর্ডারিংয়ের জন্য একটি শক্তিশালী ইন্টারফেস, যা ন্যাচারাল অর্ডারিং, রিভার্স অর্ডারিং, এবং কাস্টম অর্ডারিং সমর্থন করে।
Natural Ordering
ন্যাচারাল অর্ডারিং (Natural Ordering) হল ডেটার নিজস্ব অর্ডারিং, যা সাধারণত Comparable ইন্টারফেসের মাধ্যমে নির্ধারিত হয়। এটি কোনো ডেটা টাইপের প্রাক-নির্ধারিত অর্ডার অনুসরণ করে, যেমন সংখ্যার জন্য ক্রমাগত বড় থেকে ছোট বা ছোট থেকে বড় অর্ডার।
উদাহরণ:
import com.google.common.collect.Ordering;
import java.util.List;
import com.google.common.collect.Lists;
public class NaturalOrderingExample {
public static void main(String[] args) {
List<Integer> numbers = Lists.newArrayList(5, 3, 8, 1, 2);
// Natural Ordering ব্যবহার করে সংখ্যাগুলিকে সাজানো
Ordering<Integer> naturalOrdering = Ordering.natural();
List<Integer> sortedNumbers = naturalOrdering.sortedCopy(numbers);
System.out.println("Sorted numbers in natural order: " + sortedNumbers);
}
}
এখানে Ordering.natural() ব্যবহৃত হয়েছে, যা ডিফল্টভাবে সংখ্যাগুলিকে ছোট থেকে বড় অর্ডারে সাজাবে। ফলে আউটপুট হবে:
Sorted numbers in natural order: [1, 2, 3, 5, 8]
Reverse Ordering
রিভার্স অর্ডারিং (Reverse Ordering) হল ডেটার বিপরীত অর্ডার। এর মাধ্যমে আপনি ডেটাকে তার ন্যাচারাল অর্ডারের বিপরীতে সাজাতে পারেন। গুয়াভা লাইব্রেরি Ordering.natural().reverse() মেথডের মাধ্যমে এটি সহজে করতে দেয়।
উদাহরণ:
import com.google.common.collect.Ordering;
import java.util.List;
import com.google.common.collect.Lists;
public class ReverseOrderingExample {
public static void main(String[] args) {
List<Integer> numbers = Lists.newArrayList(5, 3, 8, 1, 2);
// Reverse Ordering ব্যবহার করে সংখ্যাগুলিকে সাজানো
Ordering<Integer> reverseOrdering = Ordering.natural().reverse();
List<Integer> sortedNumbers = reverseOrdering.sortedCopy(numbers);
System.out.println("Sorted numbers in reverse order: " + sortedNumbers);
}
}
এখানে Ordering.natural().reverse() ব্যবহৃত হয়েছে, যার ফলে সংখ্যাগুলো বড় থেকে ছোট অর্ডারে সাজানো হবে। আউটপুট হবে:
Sorted numbers in reverse order: [8, 5, 3, 2, 1]
Custom Ordering
কাস্টম অর্ডারিং (Custom Ordering) হল যখন আপনি আপনার নিজস্ব কাস্টম ক্রাইটেরিয়া অনুসারে ডেটা সাজানোর সিদ্ধান্ত নেন। এটি Ordering.from() বা Ordering.by() মেথড ব্যবহার করে করা যেতে পারে, যেখানে আপনি কাস্টম কম্প্যারেটর প্রদান করেন।
উদাহরণ:
import com.google.common.collect.Ordering;
import java.util.List;
import com.google.common.collect.Lists;
import java.util.Comparator;
public class CustomOrderingExample {
public static void main(String[] args) {
List<String> names = Lists.newArrayList("John", "Alice", "Bob", "Charlie");
// Custom Ordering ব্যবহার করে আন্ডারস্কোর (এবং ছোট হাতের অক্ষরের উপর ভিত্তি করে) দিয়ে সাজানো
Ordering<String> customOrdering = Ordering.from(Comparator.comparing(String::length));
List<String> sortedNames = customOrdering.sortedCopy(names);
System.out.println("Sorted names by length: " + sortedNames);
}
}
এখানে, আমরা নামগুলিকে তাদের দৈর্ঘ্য অনুযায়ী সাজিয়েছি। আউটপুট হবে:
Sorted names by length: [Bob, John, Alice, Charlie]
এখানে আমরা Comparator.comparing(String::length) ব্যবহার করেছি, যা নামগুলিকে তাদের দৈর্ঘ্য অনুসারে সাজাতে সাহায্য করেছে। Ordering.from() মেথড ব্যবহার করে কাস্টম কম্প্যারেটরটি সংজ্ঞায়িত করা হয়েছে।
সারাংশ
গুয়াভা (Guava) লাইব্রেরির Ordering ক্লাসটি ডেটা অর্ডারিংয়ের জন্য অনেক সুবিধা প্রদান করে। আপনি ন্যাচারাল অর্ডারিং (Natural Ordering), রিভার্স অর্ডারিং (Reverse Ordering), এবং কাস্টম অর্ডারিং (Custom Ordering) ব্যবহার করে ডেটা সোজা, উল্টো বা নিজের মতো সাজাতে পারবেন। এটি আপনাকে কোডে আরও দক্ষতা এবং নমনীয়তা প্রদান করে এবং জটিল অর্ডারিং লজিক সহজ করে তোলে।
Read more